package cn.ondraw.ragflow.pojo.request;


import lombok.Data;

import java.util.List;

/**
 * 创建数据集的请求对象
 */
@Data
public class CreateDatasetRequest {
    /**
     * 数据集的唯一名称，必须是 BMP 字符，最多 128 个字符，不区分大小写
     */
    private String name;
    /**
     * 头像的 Base64 编码，最多 65535 个字符
     */
    private String avatar;
    /**
     * 数据集的简要描述，最多 65535 个字符
     */
    private String description;
    /**
     * 嵌入模型的名称，格式为 model_name@model_factory，最多 255 个字符
     */
    private String embedding_model;
    /**
     * 数据集的访问权限，可选值为 "me" 或 "team"，默认为 "me"
     */
    private String permission;
    /**
     * 页面排名，取值范围 0-100，默认为 0
     */
    private int pagerank;
    /**
     * 数据集的分块方法，可选值为 "naive", "book", "email", "laws", "manual", "one", "paper", "picture", "presentation", "qa", "table", "tag"
     */
    private String chunk_method;
    /**
     * 数据集解析器的配置设置，根据 chunk_method 的不同而不同
     */
    private ParserConfig parser_config;

    /**
     * 解析器配置类
     */
    @Data
    public static class ParserConfig {
        // naive 方法的配置
        private Integer auto_keywords;
        private Integer auto_questions;
        private Integer chunk_token_num;
        private String delimiter;
        private Boolean html4excel;
        private String layout_recognize;
        private List<String> tag_kb_ids;
        private Integer task_page_size;
        private Raptor raptor;
        private Graphrag graphrag;

        // 其他方法的配置
        private Raptor raptorOther;

        /**
         * RAPTOR 特定设置类
         */
        @Data
        public static class Raptor {
            private Boolean use_raptor = false;
        }

        /**
         * GRAPHRAG 特定设置类
         */
        @Data
        public static class Graphrag {
            private Boolean use_graphrag;
        }
    }
}
